#ifndef MSGSOCKET_H
#define MSGSOCKET_H

#include <QObject>
#include <QTcpSocket>

class msgsocket : public QObject
{
    Q_OBJECT
public:
    explicit msgsocket(QObject *parent = 0);
    ~msgsocket();


    void ParseGetPicture(const QJsonValue &dataVal);

    /// tcpsocket
    QTcpSocket *m_tcpSocket;

    /// 获取当前用户的账号
    QString GetUserId() const;
    void SetUserId(const QString &id);

    /// 检查连接
    void CheckConnected();
    /// 手动关闭连接
    void ColseConnected();

    /// 连接服务器
    void ConnectToHost(const QString &host, const int &port);
    void ConnectToHost(const QHostAddress &host, const int &port);


signals:

    /// 发送消息信号
//    void signalMessage(const quint8 &type);
    void signalMessage(const quint8 &type, const QVector<QString> &dataVal);
    /// 发送状态信号
    void signalStatus(const quint8 &state);

public slots:

    /// socket消息发送封装
    void SlotSendMessage(const quint8 &type, const QJsonValue &dataVal);

    /// 发送上线通知
    void SlotSendOnline();

    /// 发送下线通知
    void SlotSendOffline();

private slots:

    /// 与服务器断开链接
    void SlotDisconnected();

    /// 链接上服务器
    void SlotConnected();

    /// tcp消息处理
    void SlotReadyRead();

private:

    QString m_nId;
    QString m_nType;


    /// 解析登陆返回信息
    void ParseLogin(const QJsonValue &dataVal);
    /// 解析注册返回信息
    void ParseReister(const QJsonValue &dataVal);
    /// 解析初始化客户端界面信息
    void ParseInitInfo(const QJsonValue &dataVal);
    /// 解析初始化客户端界面信息 -- 商城信息
    void ParseShoppingInfo(const QJsonValue &dataVal);
    /// 解析购物车列表
    void ParseShoppingCarList(const QJsonValue &dataVal);
    /// 解析加入购物车列表
    void ParseJoinShoppingCar(const QJsonValue &dataVal);
    /// 解析获取订单列表信息
    void ParseOrderFormList(const QJsonValue &dataVal);
    /// 解析从购物车删除商品信息
    void ParseRemoveFromCar(const QJsonValue &dataVal);
    /// 解析立即购买
    void ParseBuyNow(const QJsonValue &dataVal);
    /// 解析删除订单
    void ParseRemoveOrderForm(const QJsonValue &dataVal);
    /// 解析修改个人信息函数
    void ParseModifyUserInfo(const QJsonValue &dataVal);
    //// 解析聊天内容
    void ParseChatWithSb(const QJsonValue &dataVal);
    //// 解析获取好友列表
    void ParseGetFriendsList(const QJsonValue &dataVal);
    //// 解析获取到的好友信息
    void ParseGetFriendsInfo(const QJsonValue &dataVal);
    //// 解析发货状态
    void ParseSendGoods(const QJsonValue &dataVal);


};

#endif // MSGSOCKET_H
